<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--
    编写一个函数来查找字符串数组中的最长公共前缀。
    如果不存在公共前缀，返回空字符串 ""。
        输入: ["flower","flow","flight"]
        输出: "fl"
-->
</head>
<body>
<script>
    /**
     * @param {string[]} strs
     * @return {string}
     *
     */
    var longestCommonPrefix = function(strs) {
        //定义final为空
        let final = ""
        //如果strs的长度为0,就返回
        if (!strs.length) {
            return final
        }
        //定义循环遍历数组
        for (let i = 0; i < strs[0].length; i++) {
            //RegExp 对象表示正则表达式
            // ^ 表示开始的位置 这里规则表示从头开始匹配
            //slice(start,end) 方法可从已有的数组中返回选定的元素。
            let reg = new RegExp("^"+strs[0].slice(0, i+1))
            //定义 flag标识符
            let flag = true
            //forEach遍历数组中每一项
                //每一项str执行判断
                //match() 方法可在字符串内检索指定的值，或找到一个或多个正则表达式的匹配。
                //从第一个开始进行匹配,str的值依次为strs里面的每一个值
                //每次循环时str就进行一次匹配
            strs.forEach(str => {
                if (!str.match(reg)) {
                    //如果不匹配flag为假
                    flag = false
                }
            })
            //如果为真
            if (flag) {
                //利用slice将所有都相同的字符串保存在final中
                final = strs[0].slice(0, i+1)
            }
        }
        return final
    };
    let strs = ["flower","flow","flight"]
    console.log(longestCommonPrefix(strs));

</script>
</body>
</html>
